package E.哈希表;

import java.util.HashMap;
import java.util.Map;

public class _409_最长回文串 {
    public static void main(String[] args) {
        _409_最长回文串 test = new _409_最长回文串();
        System.out.println(test.longestPalindrome("abCcccdd"));

    }
    /**
     * 自解:用map存储 字符和出现的次数 最长的回文长度就是偶数次的字符次数加上最大的奇数
     * 问题：如果只加最大奇数的话 就不是最大的 所以就是所有的奇数-1 如果有奇数标记一下有中心数就行 最后加1
     * @param s
     * @return
     */
    public int longestPalindrome(String s) {

        Map<Character,Integer> map = new HashMap<>();
        for (int i=0;i<s.length();i++){
            if (map.containsKey(s.charAt(i))){
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }else {
                map.put(s.charAt(i),1);
            }

        }
        int len=0;
        int hasCenter=0;
        for (char i:map.keySet()){
            //偶数和奇数次判断
            if (map.get(i) % 2==0){
                len += map.get(i);
            }else {
                hasCenter = 1;
                len += map.get(i)-1;
            }
        }


        return len+hasCenter;
    }

}
